home *** CD-ROM | disk | FTP | other *** search
- TITLE STARPLOT
- STACK SEGMENT PARA STACK
- DB 20 DUP('STACK ')
- STACK ENDS
-
- DATA SEGMENT PARA PUBLIC
- NUMB EQU 40H
- LENTH EQU 0CH
- PONT DW NUMB*LENTH DUP(0)
- SIX EQU 7FC0H
- SIXH EQU 0A000H
- ZER EQU 0
- TWO EQU 3FC0H
- TWOH EQU 3200H
- ADDR DW 0
- TEMP DW ?
- LOWER EQU 0040H
- SPEED DB 6
- TOPE DW ?
- DATA ENDS
-
- CODE SEGMENT PARA PUBLIC
- START PROC FAR
- ASSUME CS:CODE,DS:DATA,SS:STACK,ES:NOTHING
- PUSH DS
- SUB AX,AX
- PUSH AX
- MOV AX,DATA
- MOV DS,AX
-
- MOV AL,0B6H
- OUT 43H,AL
- ; MOV AX,0FFFFH
- MOV AX,533H ;DIVISOR FOR 1000 HZ
- OUT 42H,AX
- CALL CLS
- MOV AX,06
- INT 10H
- MOV BX,OFFSET PONT
- MOV SI,0
- UP: CALL POINT_MAKER
- ADD SI,LENTH
- CMP SI,NUMB*LENTH
- JNE UP
- HERE: MOV SI,0
- WUP: MOV CL,SPEED
- MOV AX,[BX+SI]
- MOV DX,[BX+SI+4]
- SAR DX,CL
- ADD AX,DX
- MOV [BX+SI+8],AX
- MOV AX,[BX+SI+2]
- MOV DX,[BX+SI+6]
- SAR DX,CL
- ADD AX,DX
- MOV [BX+SI+0AH],AX
- CALL PRESET
- CALL PSET
- MOV AX,[BX+SI+8]
- MOV [BX+SI],AX
- MOV CX,[BX+SI+0AH]
- MOV [BX+SI+2],CX
- CMP AX,SIXH
- JAE GOSUB
- CMP AX,LOWER
- JBE GOSUB
- CMP CX,TWOH
- JAE GOSUB
- CMP CX,LOWER
- JBE GOSUB
- JMP NEXT
- GOSUB: CALL PRESET
- CALL POINT_MAKER
- NEXT: ADD SI,LENTH
- CMP SI,NUMB*LENTH
- JNE WUP
- MOV AH,0BH
- INT 21H
- CMP AL,0FFH
- JNE HERE
- MOV AH,07
- INT 21H
- CMP AL,30H
- JB RETN
- CMP AL,3AH
- JAE RETN
- AND AL,0FH
- MOV SPEED,AL
- JMP HERE
-
- RETN: MOV AX,2
- INT 10H
- RET
- START ENDP
-
- POINT_MAKER PROC NEAR
- MOV CL,SPEED
- TOP: CALL RANDO
- AND DX,7FC0H
- CMP DX,LOWER
- JBE TOP
- MOV [BX+SI],DX
- NEY: CALL RANDO
- AND DX,3FC0H
- CMP DX,LOWER
- JBE NEY
- MOV [BX+SI+2],DX
- MOV AX,[BX+SI]
- SUB AX,5000H
- MOV [BX+SI+4],AX
- MOV AX,[BX+SI+2]
- SUB AX,1900H
- MOV [BX+SI+6],AX
- RET
- POINT_MAKER ENDP
-
- RANDO PROC NEAR
- PUSH BX
- PUSH AX
- IN AX,42H
- ZERO: MOV BX,ADDR
- ADD DX,[BX]
- INC BX
- INC BX
- MOV ADDR,BX
- XOR DX,[BX+SI]
- SAR AX,1
- XOR DX,AX
- ADD DX,TOPE
- MOV TOPE,DX
- POP AX
- POP BX
- RET
- RANDO ENDP
-
- CLS PROC NEAR
- MOV CX,0
- MOV DX,2479H
- MOV BH,7
- MOV AX,600H
- INT 10H
- RET
- CLS ENDP
-
- PSET PROC NEAR
- MOV CL,6
- MOV AX,[BX+SI+8]
- SHR AX,CL
- MOV DX,[BX+SI+0AH]
- SHR DX,CL
- MOV CX,AX
- MOV AH,12
- MOV AL,1
- INT 10H
- RET
- PSET ENDP
-
- PRESET PROC NEAR
- MOV CL,6
- MOV AX,[BX+SI]
- SHR AX,CL
- MOV DX,[BX+SI+2]
- SHR DX,CL
- MOV CX,AX
- MOV AH,12
- MOV AL,0
- INT 10H
- RET
-
- CODE ENDS
-
- END